package com.ruoyi.project.system.task.service;

import com.ruoyi.common.utils.security.ShiroUtils;
import com.ruoyi.common.utils.text.Convert;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.project.system.task.mapper.TaskMapper;
import com.ruoyi.project.system.task.domain.Task;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
public class TaskServiceImpl implements TaskService{

    @Autowired
    private TaskMapper taskMapper;

    /**
     * 根据条件查询任务信息
     * @param task 条件
     * @return
     */
    @Override
    public List<Task> selectTaskList(Task task) {
        return taskMapper.selectTaskList(task);
    }

    /**
     * 新增任务信息
     * @param task 任务
     * @return
     */
    @Override
    @Transactional
    public int insertTask(Task task) {
        task.setCreateBy(ShiroUtils.getLoginName());
        int insert = taskMapper.insert(task);
        ShiroUtils.clearCachedAuthorizationInfo();
        return insert;
    }

    /**
     * 根据任务id查询任务
     * @param taskId 任务id
     * @return
     */
    @Override
    public Task selectTaskById(Long taskId) {
        return taskMapper.selectByPrimaryKey(taskId);
    }

    /**
     * 修改任务
     * @param task 任务信息
     * @return
     */
    @Override
    @Transactional
    public int updateTask(Task task) {
        task.setUpdateBy(ShiroUtils.getLoginName());
        int i = taskMapper.updateByPrimaryKey(task);
        ShiroUtils.clearCachedAuthorizationInfo();
        return i;
    }

    /**
     * 批量删除任务
     * @param taskIds
     * @return
     */
    @Override
    public int deleteTaskByIds(String taskIds) {
        String[] Ids = Convert.toStrArray(taskIds);
        //批量删除下发任务列表
        taskMapper.deleteGrantByIds(Ids);
        return taskMapper.deleteTaskByIds(Ids);
    }

    /**
     * 根据条件查询接受的任务列表
     * @param task 条件
     * @return
     */
    @Override
    public List<Task> selectAcceptList(Task task) {
        return taskMapper.selectAcceptList(task);
    }

    /**
     * 更具条件分页查询接受的任务列表
     * @param task 条件
     * @return
     */
    @Override
    public List<Task> selectGrantList(Task task) {
        return taskMapper.selectGrantList(task);
    }

    /**
     * 更具任务id查询下发任务
     * @param taskId 任务id
     * @return
     */
    @Override
    public Task selectGrantById(Long taskId) {
        return taskMapper.selectGrantById(taskId);
    }

    /**
     * 根基信息查询已完成的任务
     * @param task
     * @return
     */
    @Override
    public List<Task> selectResultTaskList(Task task) {
        return taskMapper.selectResultTaskList(task);
    }

    /**
     * 新增任务成果信息
     * @param task
     * @return
     */
    @Override
    @Transactional
    public int insertResult(Task task) {
        task.setUpdateBy(ShiroUtils.getLoginName());
        int i = taskMapper.insertResult(task);
        ShiroUtils.clearCachedAuthorizationInfo();
        return i;
    }

    /**
     * 修改任务结果信息
     * @param task
     * @return
     */
    @Override
    public int updateResult(Task task) {
        task.setUpdateBy(ShiroUtils.getLoginName());
        int i = taskMapper.updateResultByPrimaryKey(task);
        ShiroUtils.clearCachedAuthorizationInfo();
        return i;
    }

}
